#include "Cronometro.h"

#include <math.h>
#include <sstream>

Cronometro::Cronometro(){
	this->estadoCronometro = 0 ;
	this->inicio = 0;
	this->fin = 0 ;
}


void Cronometro::iniciar(){	
	if(estadoCronometro==1){
		// FIXME - igual no se usa
		estadoCronometro=0;
		time_t ahora;
		time(&ahora);
		//double dif = difftime(fin,inicio);
		//inicio= difftime(time();
	}
	else{
		time(&inicio);
		fin = 0;
		estadoCronometro=0;
	}	
}

bool Cronometro::estaParado(){
	return estadoCronometro;
}

int Cronometro::getSegundosTotales(){
	long res ;
	if(!estaParado()){
		time_t ahora ;	
		time(&ahora);
		res = (long)difftime(ahora,inicio);
	}
	else{
		res = (long)difftime(fin,inicio);
	}
	if(res == -1)
		res = 0;
	return res ;
}

std::string Cronometro::getHorasMinutosSegundos(){
	std::stringstream ss;
	
	int segTemp = this->getSegundosTotales();
	int seg = segTemp % 60 ;

	int minTemp = (int)floor((float)segTemp / (float)60) ;
	int min = minTemp % 60;

	int horaTemp = (int)floor((float)min / (float)60) ;
	int hora = horaTemp % 60 ;
	
	if(hora < 10)
		ss << "0";
	ss << hora << ":" ;
	
	if(min < 10)
		ss << "0";
	ss << min << ":" ;

	if(seg < 10)
		ss << "0";
	
	ss<< seg ;
	return ss.str();
}

void Cronometro::parar(){
	if(!estaParado()){
		estadoCronometro=1;
		time(&fin);	
	}
}